"""
爬取 https://movie.douban.com/top250链接的 字段数据
1
标题
评分
链接
简评
2
爬取十页的数据
3
保存为一个json格式文件

有些电影没有简评
提示  找共同节点 遍历节点获取对应字段数据

代码 截图发我
可以用xpath   用正则也是行的
发我qq邮箱 --2203期-xx同学--第三次作业


指定爬取流程
1分析数据结构  html    可以用到lxml etree
2涉及翻页     循环
3with open函数

单页数据爬取 没有问题 原因是 所有电影都有对应的四个字段
但是10页数据爬取 就会出现 影评 对不上电影 以及电影缺失
原因 是因为zip函数
解决的方法   找突破点（某些电影没有影评）
清楚xpath没有匹配数据 返回的是[]
所以以此作为判断条件
if 简评==[]:
    简评 =["这个电影没有影评"]

具体流程
找每个电影的共同节点
遍历节点 取对应的字段数据
如果返回[]


"""
# 单页数据爬取函数
import json
import time
import requests
from lxml import etree

def first_crawl(start):
    # 起始url
    url=f"https://movie.douban.com/top250?start={start*25}&filter"
#     请求头
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"
    }
#     发送请求
    response=requests.get(url=url,headers=headers)
    data=response.content.decode()
    # 对数据进行转换
    html=etree.HTML(data)
    # 通过和元素定位夫配合 找到 class=info的共同节点 作为被遍历的对象 包含 25个电影的共同节点
    nodes=html.xpath('//div[@class="info"]')
    for node in nodes:
        #标题
        title=node.xpath('./div[1]/a/span[1]/text()')[0]
        #评分
        score=node.xpath('./div[2]/div/span[2]/text()')[0]
        # # 链接
        href=node.xpath('./div[1]/a/@href')[0]
        # # 简评
        breif=node.xpath('./div[2]/p[2]/span/text()')
        if breif==[]:
            breif=["这个电影没有影评"]
        print(title,score,href,breif)
        save_data(title,score,href,breif)
    time.sleep(1)
# 保存数据函数
def save_data(title,score,href,breif):
    # type dict
    with open("豆瓣3.json","a",encoding="utf-8")as file1:
            item={
                "title":title,
                "score":score,
                "href":href,
                "breif":breif[0]
            }
            strdata = json.dumps(item, ensure_ascii=False, indent=3)
            file1.write(strdata+",\n")

if __name__ == '__main__':
    for i in range(10):
        first_crawl(i)


# https://movie.douban.com/top250?start=0&filter
# https://movie.douban.com/top250?start=25&filter= 第二页德
# https://movie.douban.com/top250?start=50&filter= 第三页
# https://movie.douban.com/top250?start=75&filter= 第四页